Many people entering a software development career are often told to focus on web applications over desktop ones. Apparently, many believe that desktop apps are a dying technology. While it is true that certain business functionality that was, in the past, performed by desktop apps is now commonly performed by hosted browser-based web apps, there are still many use cases for desktop apps and none of them are going away any time soon.
It is extremely difficult to imagine your life without desktop apps. Anything that is actually installed on a full-sized computer is one of them. Yes, web apps can do many things, but the browser that is needed to access them is, itself, a desktop app. Any integrated development environment (IDE) that programmers use to build software is a desktop app, even when it’s only ever used to write code for the web. There are countless of other examples that you can find if you’ll think about it.
Of course, web apps do have distinct advantages over desktop apps in some areas. However, it is the other way round in some other areas. So, if you are undecided which way to take your programming career, let’s have a look at the pros and cons of both technologies.
The advantages of a web app
The very obvious advantage of web apps over desktop ones is that the former don’t have to be installed on any of the machines where they are used. Back in the days, both website UI capabilities and broadband speed were very limited. This is why it was impossible to replicate some of the best UI designs from desktop apps on the web apps and make a web app run anywhere near as fast as a desktop app. However, both of these factors are now gone. With countless JavaScript frameworks, such as Aurelia, building a great website UI is as easy as ever.
This means that many types of applications can now be built as web apps. For enterprise software in particular, this also adds the advantage of not having to install a copy on every single machine within the organisation, enormously saving on cost.
Even creating files is not an issue for a web app anymore. It will be able to store them on the server or in the cloud cluster, available for download to your own machine when requested. This is how Google Docs have been able to compete with Microsoft Office.
However, while web apps are capable of doing many different things, there are still some things that desktop apps can do than the web ones can’t. Some of those capabilities are likely to never be available to web apps.
Desktop app sometimes is a much better, or even the only, choice
Let’s start with the fact that only software installed on the actual machine can access device drivers on that machine. Yes, you can stream videos and play sound off the web, but this is only possible because your browser, which in itself is a desktop app, has access to those drivers.Nothing that has to run in a background can be done by a web app. Once your browser is closed, so is your web app. However, if you need to download a large file, it is much better to do it as a background process.
You don’t want to accidentally close the browser while you’ve already downloaded half of the file, which already took you over an hour. This is why popular gaming platforms such as, Steam and Origin, have to be installed before you can download any games.
Anything that requires highly performant and very complex UI that depends on a good GPU can only be done as a desktop app. This especially applies to games. Of course, there are very impressive browser games out there. However, the most cutting edge games will always have to be installed.
First of all, in order to enable high-quality graphic and the complexity of open world play, the code needs to run as close to the hardware as possible. Secondly, games take a lot of space. If a PS4-level game was played through the browser, you would experience prohibitively long loading times, as all of this data would have to get delivered via the Internet.
Likewise, any business software with a wide range of advanced functionality should be done as a desktop app, especially when such software is capable of generating work that authors wouldn’t necessarily want to place on other people’s servers. This is why IDEs, such as Visual Studio and database management systems, such as SQL Management Studio, are desktop apps. If you intend to write closed-source code, you don’t want to compile it on somebody else’s server. Likewise, if you own some sensitive data, you don’t want to rely on third party for its storage.
These are just some of the use cases for desktop apps. Countless of other examples can be thought of. This is why the biggest technology vendors are still actively developing and promoting tools for building desktop-based software.
UWP is heavily promoted by Microsoft
.NET Framework, a proprietary software development technology made by Microsoft, always came with the ability to build desktop apps. Over the years, the technologies used for this purpose have significantly evolved. At the beginning, it was Windows Forms. Several years later, it was Windows Presentation Foundation (WPF). This technology is compatible with any officially supported version of Windows OS and is still widely used. However, since the introduction of Windows 10, a completely new framework for building desktop apps has been released. It is called Universal Windows Platform (UWP).
Unlike its predecessor, this technology is not compatible with any version of Windows that came before Windows 10. However, there are parts of this platform that are very similar to WPF. For example, both technologies use XAML, a proprietary flavor of XML, to build user interfaces. Unlike WPF, however, which is specifically tailored for building desktop apps, UWP utilises mobile-first approach. It uses the same concept as in building modern website front-end.
You can build your user interface to be easily accessible on a small hand-held device and then scale it out to make it look sufficiently good on larger screens. This allows the same app to operate on any Window device, regardless of whether it is a phone, a tablet or a desktop.
This technology is heavily promoted by Microsoft. For example, virtually every issue of MSDN Magazine has an article outlining its benefits. The company anticipates that installable apps will remain a major market for foreseeable future.
Electron: desktop app in JavaScript
One language that was never intended to be used to build a desktop app with is JavaScript. However, with the introduction of Node.js, this became possible. This is how Electron, a framework for building cross-platform desktop apps, was born. And the framework was not created as a mere hobby project either. Due to the general lack of technologies suitable for building cross-platform desktop apps in an straight-forward fashion, Electron became very well known and popular.
As great as WUP is, it can only be used on Windows. Electron, however, doesn’t have this limitation. Exactly the same code can be executed on Linux and Mac as well as Windows. On top of this, any library or framework that is available for JavaScript in a browser is available for Electron. Therefore, by taking full advantage of decades-long experimentation with web front-end technologies, Electron can be used to build apps that are just as visually stunning as the best websites are.
Having JavaScript as the main programming language gives app developers another advantage. Anyone who has previously worked on web apps can easily transition into using Electron to build desktop apps. Likewise, if all you have ever done as a software developer is built Electron apps, you can transition into web development in no time.
Wrapping up
So, despite some fear within the software development circle, desktop apps are far from being confined to the recycling bin of the history. Even though some functionality traditionally performed by desktop apps is now done by web app, the market for desktop app is still booming.
Software vendors aren’t only maintaining their old technologies for building desktop apps, but are also introducing new ones. Another good news is that the new generation of desktop app building technologies is not confined to the desktop. Microsoft’s UWP can be used for mobile app development while Electron, the technology based on Node.js, allows you to easily port your web app code into desktop apps and vice versa. So, if you desktop app development is something that you want to do, but aren’t sure whether it’s worth it, I can assure you that it totally is.